package futbolfacil.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import futbolfacil.excepcion.DAOExcepcion;
import futbolfacil.modelo.Cancha;
import futbolfacil.modelo.Horario;
import futbolfacil.util.ConexionBD;

public class HorarioDAO extends BaseDAO {

	/* ----------------------------------------------------------------------
	 * Amed Ysmodes.
	 * HorarioDAO.
	 */
	public void insertar(Horario objHorario) throws DAOExcepcion {
		System.out.println("HorarioDAO: insertar(Horario objHorario)");
		
		String query = "INSERT INTO horario (hor_dia, hor_ini, hor_fin, hor_pre, hor_prm, hor_est, art_cod) " +
				"VALUES (?,?,?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, objHorario.getDiaHorario());
			stmt.setString(2, objHorario.getInicioHorario());
			stmt.setString(3, objHorario.getFinHorario());
			stmt.setDouble(4, objHorario.getPrecioHorario());
			stmt.setString(5, objHorario.getPromocionHorario());
			stmt.setString(6, objHorario.getEstadoHorario());
			stmt.setInt(7, objHorario.getCanchaHorario().getCodigoCancha());
			int i = stmt.executeUpdate();
			if(i != 1){
				throw new SQLException("No se pudo insertar");
			}
			System.out.println("Horario Registrado. \n");
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
	
	public Collection<Horario> listar() throws DAOExcepcion {
		System.out.println("HorarioDAO: listar()");
		
		CanchaDAO dao = new CanchaDAO();
		String query = "SELECT * FROM horario";
		Collection<Horario> listHorario = new ArrayList<Horario>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			rs = stmt.executeQuery();
			
			while (rs.next()){
				Horario objHorario = new Horario();
				objHorario.setCodigoHorario(rs.getInt("hor_cod"));
				objHorario.setDiaHorario(rs.getString("hor_dia"));
				objHorario.setInicioHorario(rs.getString("hor_ini"));
				objHorario.setFinHorario(rs.getString("hor_fin"));
				objHorario.setPrecioHorario(rs.getDouble("hor_pre"));
				objHorario.setPromocionHorario(rs.getString("hor_prm"));
				objHorario.setFechaHorario(rs.getString("hor_fec"));
				objHorario.setEstadoHorario(rs.getString("hor_est"));
				
				Cancha objCancha = new Cancha();
				objCancha = dao.buscarPorCodigo(rs.getInt("art_cod"));				
				objHorario.setCanchaHorario(objCancha);
				
				listHorario.add(objHorario);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		
		return listHorario;
	}
	/* ----------------------------------------------------------------------
	 */	
	
	
	
	
}
